Certain applications or services have requirements for high reliability, consistency and low latency. For example, applications and/or services that store certain types of transactional data require that the data stored across multiple data centers or data stores is consistent. Furthermore, the data must be reliable in that data cannot be lost or in an ambiguous state. Finally, low latency is important in order to handle growing numbers of transactions. The properties of high reliability, consistency and low latency are, for example, goals of many, if not most, database systems so that applications and services built upon these database systems meet the desired requirements.
Experience has shown that applications/services that must meet very high reliability and consistency levels for a given 98th-99th percentile latency routinely struggle in achieving their goals when they directly use existing storage technologies. This is because there are so many things that can fail explicitly or run longer than acceptable between the service and the storage node and within the storage node itself. These problems are exacerbated when the storage nodes are remote from the applications/services, such as where data centers are geographically or electronically remote from the application/service itself.
It is within this context that the present embodiments arise.